package com.suma.platform.core.util;

/**
 * 双重检查[推荐用] Double-Check概念对于多线程开发者来说不会陌生，如代码中所示，我们进行了两次if (singleton ==
 * null)检查，这样就可以保证线程安全了。这样，实例化代码只用执行一次，后面再次访问时，判断if (singleton ==
 * null)，直接return实例化对象。 优点：线程安全；延迟加载；效率较高。
 * 
 * @author suma
 * @date 2018/2/9 下午2:06
 */
public class Singleton3 {

	private Singleton3() {
	}

	private static volatile Singleton3 instance;

	public static Singleton3 getInstance() {
		if (null == instance) {
			synchronized (Singleton3.class) {
				if (null == instance) {
					instance = new Singleton3();
				}
			}
		}
		return instance;
	}
}
